#ifndef CLICKABLELABEL_H
#define CLICKABLELABEL_H
#include <QLabel>
#include <QMouseEvent>
#include <QObject>
#include <QLineEdit>
#include <QDateTimeEdit>
#include <QDebug>
#include <QTextBrowser>
class ClickableLabel : public QLabel
{
    Q_OBJECT
private:
    int clickCount=0; // 用于跟踪点击次数的成员变量
public:
    ClickableLabel(QWidget* parent = nullptr) : QLabel(parent) {}

protected:
    void mousePressEvent(QMouseEvent* event) override
    {
        if (event->button() == Qt::LeftButton) {

            // 左键点击事件
            emit clicked();
            clickCount++;
        }
        if (clickCount>= 5) {
            // 执行五次点击触发的操作
            emit fiveClicked();
            clickCount = 0; // 重置点击计数器
        }

        // 将事件传递给父类处理
        QLabel::mousePressEvent(event);
    }
    void mouseDoubleClickEvent(QMouseEvent *event) override
       {
           if (event->button() == Qt::LeftButton)
           {
               // 左键点击事件
               emit twoclicked();
               // 在这里执行双击触发的操作
            //   QMessageBox::information(this, "Double Click", "Label Double Clicked!");
           }

           // 传递事件给父类处理
           QLabel::mouseDoubleClickEvent(event);
       }

signals:
    void clicked();
     void twoclicked();
        void fiveClicked(); // 自定义信号，用于通知五次点击事件
};
class ClickableLineEdit : public QLineEdit
{
    Q_OBJECT
private:
  int clickCount=0; // 用于跟踪点击次数的成员变量
public:
    ClickableLineEdit(QWidget* parent = nullptr) : QLineEdit(parent) {}

protected:
    void mousePressEvent(QMouseEvent* event) override
    {
        if (event->button() == Qt::LeftButton) {
            // 左键点击事件
            emit clicked();
            clickCount++;
qDebug()<<"2";
        }
        if (clickCount == 5) {
            // 执行五次点击触发的操作
            emit fiveClicked();
            clickCount = 0; // 重置点击计数器
        }
        // 将事件传递给父类处理
             QLineEdit::mousePressEvent(event);
    }
    void mouseDoubleClickEvent(QMouseEvent *event) override
       {
           if (event->button() == Qt::LeftButton)
           {
               // 左键点击事件
               emit twoclicked();
               // 在这里执行双击触发的操作
            //   QMessageBox::information(this, "Double Click", "Label Double Clicked!");
           }

           // 将事件传递给父类处理
                QLineEdit::mousePressEvent(event);
       }

signals:
    void clicked();
     void twoclicked();
        void fiveClicked(); // 自定义信号，用于通知五次点击事件
};
class ClickableDateTime : public QDateTimeEdit
{
    Q_OBJECT
private:
  int clickCount=0; // 用于跟踪点击次数的成员变量
public:
    ClickableDateTime(QWidget* parent = nullptr) : QDateTimeEdit(parent) {}

protected:
    void mousePressEvent(QMouseEvent* event) override
    {
        if (event->button() == Qt::LeftButton) {
            // 左键点击事件
            emit clicked();
            clickCount++;
qDebug()<<"3";
        }
        if (clickCount == 5) {
            // 执行五次点击触发的操作
            emit fiveClicked();
            clickCount = 0; // 重置点击计数器
        }
        // 将事件传递给父类处理
             QDateTimeEdit::mousePressEvent(event);
    }
    void mouseDoubleClickEvent(QMouseEvent *event) override
       {
           if (event->button() == Qt::LeftButton)
           {
               // 左键点击事件
               emit twoclicked();
               // 在这里执行双击触发的操作
            //   QMessageBox::information(this, "Double Click", "Label Double Clicked!");
           }

           // 将事件传递给父类处理
                QDateTimeEdit::mousePressEvent(event);
       }

signals:
    void clicked();
     void twoclicked();
        void fiveClicked(); // 自定义信号，用于通知五次点击事件
};


class ClickableTextBrowser : public QTextBrowser {
    Q_OBJECT

public:
     ClickableTextBrowser(QWidget *parent = nullptr) : QTextBrowser(parent) {}


protected:
    void mousePressEvent(QMouseEvent *event) override {
        if (event->button() == Qt::LeftButton) {
               qDebug()<<"3";
            // 左键点击事件
            emit clicked();

        }
           qDebug()<<"4";
        QTextBrowser::mousePressEvent(event);
    }
signals:
    void clicked();
};
#endif // CLICKABLELABEL_H
